import unittest

from framework.core.crawler_task import Task


class TaskTestCase(unittest.TestCase):
    def test_1(self):
        url_list1 = [
            ("http://www.baidu.com", "metadata", "desc", {"name": "百度1", "type": "2"}), ("http://www.baidu2.com", "metadata", "desc", {"name": "百度2", "type": "2"}), ("http://www.baidu3.com", "task_type", "desc", {"name": "百度3", "type": "2"})
        ]
        r1 = Task.create_tasks(url_list1, parser='default')
        self.assertEqual(r1[0].url, "http://www.baidu.com")
        self.assertEqual(r1[0].tags["name"], "百度1")

        url_list2 = [
            "http://www.baidu.com", "http://www.baidu2.com", "http://www.baidu3.com"
        ]
        r2 = Task.create_tasks(url_list2, parser='default')
        self.assertEqual(r2[0].url, "http://www.baidu.com")

        url_list3 = [
            ("\"http://www.baidu.com\"", "metadata", "desc", "百度1"), ("\"http://www.baidu2.com\"", "metadata", "desc", "百度2"), ("\"http://www.baidu3.com\"", "task_type", "desc", "百度3")
        ]
        r3 = Task.create_tasks(url_list3, parser='default')
        self.assertEqual(r3[0].url, "http://www.baidu.com")
        self.assertEqual(r3[0].tags, "百度1")

        url_list4 = [
            ("http://www.baidu.com", "metadata", "desc", {"name": "百度1", "type": "2"}),
            ("http://www.baidu2.com", "metadata", "desc", {"name": "百度2", "type": "2"}),
            ("http://www.baidu3.com", "metadata", "desc", {"name": "百度3", "type": "2"})
        ]
        r4 = Task.create_tasks(url_list4, parser='default')
        self.assertEqual(r4[0].url, "http://www.baidu.com")
        self.assertEqual(r4[0].tags["name"], "百度1")
        self.assertEqual(r4[0].metadata, "metadata")
        self.assertEqual(r4[0].desc, "desc")

        r5 = Task.create_tasks([], parser='default')
        self.assertEqual(len(r5), 0)


if __name__ == '__main__':
    unittest.main()
